/** * Computes the greatest common divisor (GCD) of two integers using Euclid's algorithm. * Handles negative numbers and zero correctly. * * @param {number} a - First integer. * @param {number} b - Second integer. * @returns {number} The GCD of a and b. Returns 0 if both a and b are 0. */ export function gcd(a, b) { // Convert to absolute values to handle negatives a = Math.abs(a); b = Math.abs(b); // Euclidean algorithm while (b !== 0) { const temp = b; b = a % b; a = temp; } return a; }